diff --git a/tests/codeigniter/database/DB_driver_test.php b/tests/codeigniter/database/DB_driver_test.php
index fb40f06..9e16e29 100644
--- a/tests/codeigniter/database/DB_driver_test.php
+++ b/tests/codeigniter/database/DB_driver_test.php
@@ -2,8 +2,6 @@
 
 class DB_driver_test extends CI_TestCase {
 
-	// ------------------------------------------------------------------------
-
 	public function test_initialize()
 	{
 		$config = Mock_Database_DB::config(DB_DRIVER);
@@ -32,5 +30,5 @@
 	{
 		return new Mock_Database_Drivers_Postgre($config);
 	}
-	
+
 }
\ No newline at end of file
diff --git a/tests/codeigniter/database/DB_test.php b/tests/codeigniter/database/DB_test.php
index 9b93e22..d5c0dea 100644
--- a/tests/codeigniter/database/DB_test.php
+++ b/tests/codeigniter/database/DB_test.php
@@ -2,8 +2,6 @@
 
 class DB_test extends CI_TestCase {
 
-	// ------------------------------------------------------------------------
-
 	public function test_db_invalid()
 	{
 		$connection = new Mock_Database_DB(array(
@@ -45,5 +43,5 @@
 		$this->assertTrue($db instanceof CI_DB);
 		$this->assertTrue($db instanceof CI_DB_Driver);
 	}
-	
+
 }
\ No newline at end of file
diff --git a/tests/codeigniter/database/query_builder/escape_test.php b/tests/codeigniter/database/query_builder/escape_test.php
index 5dd2da0..96fbd07 100644
--- a/tests/codeigniter/database/query_builder/escape_test.php
+++ b/tests/codeigniter/database/query_builder/escape_test.php
@@ -23,13 +23,10 @@
 	public function test_escape_like_percent_sign()
 	{
 		$string = $this->db->escape_like_str('\%foo');
-		$sql = "SELECT `value` FROM `misc` WHERE `key` LIKE '$string%'"; 
-		$sql .= (strpos(DB_DRIVER, 'mysql') !== FALSE) ? ";" : "ESCAPE '!';";
+		$res = $this->db->select('value')->from('misc')->like('key', $string, 'after')->get();
 
-		$res = $this->db->query($sql)->result_array();
-		
 		// Check the result
-		$this->assertEquals(1, count($res));
+		$this->assertEquals(1, count($res->result_array()));
 	}
 
 	// ------------------------------------------------------------------------
@@ -40,11 +37,10 @@
 	public function test_escape_like_backslash_sign()
 	{
 		$string = $this->db->escape_like_str('\\');
-		$sql = "SELECT `value` FROM `misc` WHERE `key` LIKE '$string%'";
-		$sql .= (strpos(DB_DRIVER, 'mysql') !== FALSE) ? ";" : "ESCAPE '!';";
-		$res = $this->db->query($sql)->result_array();
-		
+		$res = $this->db->select('value')->from('misc')->like('key', $string, 'after')->get();
+
 		// Check the result
-		$this->assertEquals(2, count($res));
+		$this->assertEquals(2, count($res->result_array()));
 	}
+
 }
\ No newline at end of file
